home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / dev / gui / gengui.lha / GenGui / Examples / mux.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-29  |  6.2 KB  |  322 lines

  1. /*
  2.  * Source generated by GenGui V1.0
  3.  * which is (c)1994 by Matthias Meixner
  4.  */
  5.  
  6. #ifndef _GUI_LAYOUT
  7. #define _GUI_LAYOUT
  8.  
  9. #include <exec/types.h>
  10. #include <libraries/gadtools.h>
  11. #include <proto/gadtools.h>
  12.  
  13. #include <intuition/gadgetclass.h>
  14. #define GL_VBOX -1
  15. #define GL_HBOX -2
  16. #define CUSTOM_KIND -3
  17.  
  18. #define MODE_NEW     0
  19. #define MODE_RESIZE  1
  20. #define MODE_REFRESH 2
  21. #define MODE_FREE    3
  22. #define MODE_BACKUP  4
  23. #define MODE_RESTORE 5
  24.  
  25. #define BOXFLG_CUSTOM   1
  26. #define BOXFLG_STRING   2
  27. #define BOXFLG_INTEGER  4
  28. #define BOXFLG_DISABLED 8
  29. #define BOXFLG_BACKUP  16
  30. #define BOXFLG_INITED  (1<<15)
  31.  
  32. #define GetString(g) (((struct StringInfo * )g->SpecialInfo)->Buffer)
  33. #define GetNumber(g) (((struct StringInfo * )g->SpecialInfo)->LongInt)
  34. #define GetInfo(g) ((struct GadInfo *)((g)->UserData))
  35. #define GetUserData(g) (GetInfo(g)->UserData)
  36.  
  37. struct GadDim {
  38.    int Kind;
  39.    USHORT Rx,Ry,Cx,Cy,Px,Py,SRx,SRy,SPx,SPy;
  40.    USHORT Flags;
  41. };
  42.  
  43. struct Box {
  44.    struct GadDim Dim;
  45.    struct Box **Entry;
  46. };
  47.  
  48. struct WinInfo {
  49.    struct Box *Box;
  50.    struct Gadget **Gadgets;
  51.    struct Gadget *Prev;
  52.    struct Window *Window;
  53.    struct Gadget *GList;
  54.    int FontX,FontY;
  55.    struct TextAttr TextAttr;
  56.    APTR Visual;
  57.    char Mode,Render;
  58.    USHORT MinX,MinY;
  59. };
  60.  
  61. struct GadInfo {
  62.    struct GadDim dim;
  63.    int XSpace,YSpace,GadNum;
  64.    int (*CustomFunc)(struct WinInfo *WInfo,
  65.                      struct NewGadget *NewGad,
  66.                      struct GadInfo *GadInfo,
  67.                      int Left, int Top, int Width, int Height);
  68.    struct TextAttr *TextAttr;
  69.    char *Text;
  70.    int GadgetID;
  71.    ULONG Flags,UserData;
  72.    int(*HookFunc)(struct IntuiMessage *);
  73.    ULONG *Tags;
  74.    ULONG *SaveTags;
  75.    ULONG Code;
  76.    struct Gadget *ThisGad;
  77. };
  78.  
  79. int RenderGui(struct Window *win, struct WinInfo *winfo);
  80. int ResizeGui(struct WinInfo *winfo);
  81. int RefreshGui(struct WinInfo *winfo);
  82. void FreeGui(struct WinInfo *winfo);
  83. void StopGui(struct WinInfo *winfo);
  84. int SubGui(struct WinInfo *, struct WinInfo *,int ,int ,int , int );
  85.  
  86. void ClearWindow(struct Window *);
  87. struct IntuiMessage *Gui_GetIMsg(struct MsgPort *userport,struct IntuiMessage *);
  88.  
  89. BOOL Gui_SetGadgetAttrs(struct Gadget *,struct Window *,
  90.                         struct Requester *, ULONG ,...);
  91. BOOL Gui_SetGadgetAttrsA(struct Gadget *,struct Window *,
  92.                         struct Requester *, ULONG *);
  93. #endif
  94.  
  95. struct Gadget *Gui1_Gadgets[2];
  96.  
  97. #define Gui1_1 0
  98.  
  99. ULONG Gui1Tags1[]={
  100.    TAG_DONE
  101. };
  102.  
  103. struct GadInfo Gui11={
  104.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  105.    INTERWIDTH,INTERHEIGHT,0,NULL,NULL,
  106.    "1" ,1,0,0,NULL,Gui1Tags1
  107. };
  108.  
  109. #define Gui1_2 1
  110.  
  111. ULONG Gui1Tags2[]={
  112.    TAG_DONE
  113. };
  114.  
  115. struct GadInfo Gui12={
  116.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  117.    INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
  118.    "2" ,2,0,0,NULL,Gui1Tags2
  119. };
  120.  
  121. struct Box *Gui1V0[]={
  122.    (struct Box *)&Gui11,
  123.    (struct Box *)&Gui12,
  124.    NULL
  125. };
  126.  
  127. struct Box Gui10={
  128.    GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,Gui1V0
  129. };
  130.  
  131. struct WinInfo Gui1 = {
  132.    &Gui10,Gui1_Gadgets
  133. };
  134.  
  135. struct Gadget *Gui2_Gadgets[2];
  136.  
  137. #define Gui2_3 0
  138.  
  139. ULONG Gui2Tags1[]={
  140.    GTST_MaxChars,256 ,TAG_DONE
  141. };
  142.  
  143. struct GadInfo Gui21={
  144.    STRING_KIND,1,1,0,0,0+0,0+0,0,0,0,0,BOXFLG_STRING,
  145.    INTERWIDTH,INTERHEIGHT,0,NULL,NULL,
  146.    "",3,0,0,NULL,Gui2Tags1
  147. };
  148.  
  149. #define Gui2_4 1
  150.  
  151. ULONG Gui2Tags2[]={
  152.    TAG_DONE
  153. };
  154.  
  155. struct GadInfo Gui22={
  156.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  157.    INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
  158.    "2" ,4,0,0,NULL,Gui2Tags2
  159. };
  160.  
  161. struct Box *Gui2V0[]={
  162.    (struct Box *)&Gui21,
  163.    (struct Box *)&Gui22,
  164.    NULL
  165. };
  166.  
  167. struct Box Gui20={
  168.    GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,Gui2V0
  169. };
  170.  
  171. struct WinInfo Gui2 = {
  172.    &Gui20,Gui2_Gadgets
  173. };
  174.  
  175. struct Gadget *Gui3_Gadgets[4];
  176.  
  177. #define Gui3_5 0
  178.  
  179. ULONG Gui3Tags2[]={
  180.    TAG_DONE
  181. };
  182.  
  183. struct GadInfo Gui32={
  184.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  185.    INTERWIDTH,INTERHEIGHT,0,NULL,NULL,
  186.    "1" ,5,0,0,NULL,Gui3Tags2
  187. };
  188.  
  189. #define Gui3_6 1
  190.  
  191. ULONG Gui3Tags3[]={
  192.    TAG_DONE
  193. };
  194.  
  195. struct GadInfo Gui33={
  196.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  197.    INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
  198.    "2" ,6,0,0,NULL,Gui3Tags3
  199. };
  200.  
  201. struct Box *Gui3V1[]={
  202.    (struct Box *)&Gui32,
  203.    (struct Box *)&Gui33,
  204.    NULL
  205. };
  206.  
  207. struct Box Gui31={
  208.    GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,Gui3V1
  209. };
  210.  
  211. #define Gui3_7 2
  212.  
  213. ULONG Gui3Tags5[]={
  214.    TAG_DONE
  215. };
  216.  
  217. struct GadInfo Gui35={
  218.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  219.    INTERWIDTH,INTERHEIGHT,2,NULL,NULL,
  220.    "3" ,7,0,0,NULL,Gui3Tags5
  221. };
  222.  
  223. #define Gui3_8 3
  224.  
  225. ULONG Gui3Tags6[]={
  226.    TAG_DONE
  227. };
  228.  
  229. struct GadInfo Gui36={
  230.    BUTTON_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  231.    INTERWIDTH,INTERHEIGHT,3,NULL,NULL,
  232.    "4" ,8,0,0,NULL,Gui3Tags6
  233. };
  234.  
  235. struct Box *Gui3V4[]={
  236.    (struct Box *)&Gui35,
  237.    (struct Box *)&Gui36,
  238.    NULL
  239. };
  240.  
  241. struct Box Gui34={
  242.    GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,Gui3V4
  243. };
  244.  
  245. struct Box *Gui3V0[]={
  246.    &Gui31,
  247.    &Gui34,
  248.    NULL
  249. };
  250.  
  251. struct Box Gui30={
  252.    GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,Gui3V0
  253. };
  254.  
  255. struct WinInfo Gui3 = {
  256.    &Gui30,Gui3_Gadgets
  257. };
  258.  
  259. char *modes[]={"Mode 1","Mode 2","Mode 3",NULL};
  260. struct WinInfo *muxmodes[]={&Gui1,&Gui2,&Gui3};
  261. int gui_mux=0;
  262. extern struct WinInfo TestPro;
  263. int MHook(struct IntuiMessage *msg)
  264. {
  265.    StopGui(&TestPro);
  266.    gui_mux=msg->Code;
  267.    ClearWindow(TestPro.Window);
  268. /*   SetRast(TestPro.Window->RPort,0);
  269.    EraseRect(TestPro.Window->RPort,0,0,
  270.              TestPro.Window->Width-1,TestPro.Window->Height-1); */
  271.    RefreshWindowFrame(TestPro.Window);
  272.    RenderGui(TestPro.Window,&TestPro);
  273.    return(1);
  274. }
  275. int Multiplex(struct WinInfo *winfo,
  276.                      struct NewGadget *ng,
  277.                      struct GadInfo *gad,
  278.                      int left, int top, int width, int height)
  279. {
  280.    return(SubGui(winfo,muxmodes[gui_mux],left,top,width,height));
  281. }
  282. struct Gadget *TestPro_Gadgets[2];
  283.  
  284. #define TestPro_10 0
  285.  
  286. ULONG TestProTags1[]={
  287.    GTCY_Labels,(ULONG)modes ,TAG_DONE
  288. };
  289.  
  290. struct GadInfo TestPro1={
  291.    CYCLE_KIND,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,
  292.    INTERWIDTH,INTERHEIGHT,0,NULL,NULL,
  293.    "",10,0,0,MHook ,TestProTags1
  294. };
  295.  
  296. #define TestPro_11 1
  297.  
  298. ULONG TestProTags2[]={
  299.    TAG_DONE
  300. };
  301.  
  302. struct GadInfo TestPro2={
  303.    CUSTOM_KIND,1,1,0,0,0+0,0+0,0,0,0,0,BOXFLG_CUSTOM,
  304.    INTERWIDTH,INTERHEIGHT,1,Multiplex ,NULL,
  305.    "",11,0,0,NULL,TestProTags2
  306. };
  307.  
  308. struct Box *TestProV0[]={
  309.    (struct Box *)&TestPro1,
  310.    (struct Box *)&TestPro2,
  311.    NULL
  312. };
  313.  
  314. struct Box TestPro0={
  315.    GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,TestProV0
  316. };
  317.  
  318. struct WinInfo TestPro = {
  319.    &TestPro0,TestPro_Gadgets
  320. };
  321.  
  322.